from abc import ABCMeta, abstractmethod

class Stuff(ABCMeta):
    def __init__(self, name) -> None:
        self._name = name
        self.sallary = 0

    def name(self):
        return self._name

    @abstractmethod    
    def get_sallary(self):
        pass


class Manage(Stuff):
    def get_sallary(self):
        self.sallary =  15000

class Programmer(Stuff):

    def __init__(self, name, working_hour=0):
        super().__init__(name)
        self._working_hour = working_hour
    
    def get_sallary(self):
        self.sallary = 150 * self._working_hour

    @property
    def working_hour(self):
        return self._working_hour

    @working_hour.setting
    def working_hour(self, working_hour):
        self._working_hour = working_hour if working_hour > 0 else 0

class Salesman(Stuff):

    def __init__(self, name, sales=0) -> None:
        super().__init__(name)
        self._sales = sales
    
    @property
    def sales(self):
        return self._sales

    @sales.setter
    def sales(self,sales):
        self._sales = sales if sales > 0 else 0

    def get_sallary(self):
        self.sallary = 1500 + self.sales * 0.05
    




    

